﻿using QuanLyThuVien.DAL;
using QuanLyThuVien.DTO;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace QuanLyThuVien.BLL
{
    //----------------------------------------------------------------------
    //Desc: class xử lý cho bảng THELOAI
    //----------------------------------------------------------------------
    public class BLLTheLoai
    {
        //----------------------------------------------------------------------
        //Desc: constructor mặc định
        //----------------------------------------------------------------------
        public BLLTheLoai()
        { }

        //----------------------------------------------------------------------
        //Desc: lấy danh sách thể loại
        //----------------------------------------------------------------------
        public List<DTOTheLoai> LayDSTheLoai()
        {
            DALTheLoai _dalTLSach = new DALTheLoai();
            return _dalTLSach.LayDSTheLoai();
        }

        //----------------------------------------------------------------------
        //Desc: lấy danh sách thể loại trả về datatable
        //----------------------------------------------------------------------
        public DataTable LayDanhSachTheLoai()
        {
            DALTheLoai _dalTheLoai = new DALTheLoai();
            return _dalTheLoai.LayDanhSachTheLoai();
        }

        //----------------------------------------------------------------------
        //Desc: lấy thông tin thể loại
        //----------------------------------------------------------------------
        public DTOTheLoai LayThongTinTL(string matheloai)
        {
            DALTheLoai _dalTheLoai = new DALTheLoai();
            return _dalTheLoai.LayThongTinTL(matheloai);
        }

        //----------------------------------------------------------------------
        //Desc: lấy tên thể loại
        //----------------------------------------------------------------------
        public string LayTenTheLoai(string matheloai)
        {
            DALTheLoai _dalTLSach = new DALTheLoai();
            return _dalTLSach.LayTenTheLoai(matheloai);
        }

        //----------------------------------------------------------------------
        //Desc: phát sinh mã thể loại
        //----------------------------------------------------------------------
        public bool PhatSinhMaTheLoai(ref DTOTheLoai theloai)
        {
            DALTheLoai _dalTheLoai = new DALTheLoai();
            int stt = _dalTheLoai.DemTheLoai();
            if (stt < 0)
                return false;
            if (stt == 0)
                stt++;
            string matheloai = "TL" + stt.ToString("D3");
            int dem = _dalTheLoai.DemMaTheLoai(matheloai);
            while (dem > 0)
            {
                stt++;
                matheloai = "TL" + stt.ToString("D3");
                dem = _dalTheLoai.DemMaTheLoai(matheloai);
            }

            if (dem < 0)
                return false;

            theloai.MaTheLoai = matheloai;
            return true;
        }

        //----------------------------------------------------------------------
        //Desc: cập nhật thể loại
        //----------------------------------------------------------------------
        public bool CapNhat(DTOTheLoai theloai)
        {
            DALTheLoai _dalTheLoai = new DALTheLoai();
            return _dalTheLoai.CapNhat(theloai);
        }

        //----------------------------------------------------------------------
        //Desc: kiểm tra tồn tại đầu sách
        //----------------------------------------------------------------------
        public bool KiemTraTonTaiDauSach(string matl)
        {
            DALTheLoai _dalTheLoai = new DALTheLoai();
            int dem = _dalTheLoai.DemSoDauSachCuaTL(matl);
            if (dem != 0)
                return true;
            else
                return false;
        }

        //----------------------------------------------------------------------
        //Desc: xóa thể loại
        //----------------------------------------------------------------------
        public bool Xoa(DTOTheLoai theloai)
        {
            DALTheLoai _dalTheLoai = new DALTheLoai();
            return _dalTheLoai.Xoa(theloai);
        }
    }
}
